Skip to content

ci: configure Solana CLI before devnet verify build#77

Merged
dev-jodee merged 1 commit intomainfrom
ci/devnet-verify-cli-config
Apr 30, 2026
Merged

ci: configure Solana CLI before devnet verify build#77
dev-jodee merged 1 commit intomainfrom
ci/devnet-verify-cli-config

Conversation

@dev-jodee
Copy link
Copy Markdown
Collaborator

Summary

  • Add a solana config set step so ~/.config/solana/cli/config.yml exists before the devnet verify-build step runs.

Root Cause

solana-verify (Ellipsis-Labs/solana-verifiable-build) loads the CLI config in process_otter_verify_ixs even when -k <keypair> is provided. The relevant snippet from upstream src/solana_program.rs:

let user_config = get_user_config_with_path(config_path)?;
let signer = if let Some(path_to_keypair) = path_to_keypair {
    get_keypair_from_path(&path_to_keypair)?
} else {
    user_config.0
};

get_user_config_with_path(None) calls Config::load(solana_cli_config::CONFIG_FILE), i.e. ~/.config/solana/cli/config.yml. The shared setup action only creates ~/.config/solana/id.json; no step in the workflow ever called solana config set, so config.yml was never materialized. The upload phase therefore aborted with Error: No such file or directory (os error 2) after the build had already succeeded and the on-chain hash had matched.

solana config set --url "$RPC_URL" --keypair "$HOME/.config/solana/id.json" materializes the config file with a keypair_path that exists. The deployer keypair from Doppler is still passed to every sub-action via the keypair input and remains the actual transaction signer; this just satisfies solana-verify's unconditional config load.

Test Plan

  • Trigger Release workflow against devnet from this branch.
  • Confirm Verify build (devnet) clears the upload phase and writes the verification PDA for De1egAFMkMWZSN5rYXRj9CAdheBamobVNubTsi9avR44.

Failing run for reference: https://github.com/solana-program/subscriptions/actions/runs/25185255771

solana-verify's `process_otter_verify_ixs` always calls
`get_user_config_with_path(None)?` before checking whether `-k` was
supplied, so it loads `~/.config/solana/cli/config.yml` even when an
explicit keypair is passed. The setup action only creates
`~/.config/solana/id.json`; nothing in the workflow had ever called
`solana config set`, so config.yml never existed and verify-build failed
during the upload phase with `Error: No such file or directory
(os error 2)`.

Run `solana config set --url $RPC_URL --keypair ~/.config/solana/id.json`
once after setup to materialize config.yml with a keypair path that
exists. The deployer keypair from Doppler is still passed to every
sub-action via `inputs.keypair` and remains the actual signer.
@dev-jodee dev-jodee merged commit 80370dd into main Apr 30, 2026
8 checks passed
@dev-jodee dev-jodee deleted the ci/devnet-verify-cli-config branch April 30, 2026 20:06
@github-actions
Copy link
Copy Markdown

Compute Unit Report

Instruction Samples Min CUs Max CUs Avg CUs Est Cost (Low) [SOL] Est Cost (Med) [SOL] Est Cost (High) [SOL]
cancel_subscription 11 1805 2118 2003 0.000005000 0.000005080 0.000006001
close_subscription_authority 7 1881 1916 1886 0.000005000 0.000005075 0.000005943
create_fixed_delegation 38 3621 15616 5505 0.000005001 0.000005220 0.000007752
create_plan 84 3540 15553 5132 0.000005001 0.000005205 0.000007566
create_recurring_delegation 27 3640 8143 4646 0.000005001 0.000005185 0.000007323
delete_plan 8 416 416 416 0.000005000 0.000005016 0.000005208
init_subscription_authority 142 9349 27351 12543 0.000005003 0.000005501 0.000011271
revoke_delegation 19 318 585 420 0.000005000 0.000005016 0.000005210
subscribe 21 6666 12666 8176 0.000005002 0.000005327 0.000009088
transfer_fixed 6 10105 13105 11604 0.000005003 0.000005464 0.000010802
transfer_recurring 17 10212 14803 11920 0.000005003 0.000005476 0.000010960
transfer_subscription 10 10495 11995 11100 0.000005003 0.000005444 0.000010550
update_plan 21 424 500 474 0.000005000 0.000005018 0.000005237

Generated: 2026-04-30

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant